n = int(input())
parent = [0] + list(map(int, input().split()))
values = list(map(int, input().split()))

# 构建树的邻接表
tree = [[] for _ in range(n + 1)]
for i in range(2, n + 1):
    tree[parent[i - 1]].append(i)

# 深度优先搜索
def dfs(node, depth):
    # 不选当前节点的最大权值
    no_choose = 0
    # 选当前节点的最大权值
    choose = values[node - 1]
    for child in tree[node]:
        c1, c2 = dfs(child, depth + 1)
        # 不选当前节点时，子节点可以选也可以不选
        no_choose += max(c1, c2)
        # 选当前节点时，子节点不能选
        choose += c1
    # 如果当前节点与根节点的距离是奇数，选和不选的结果交换
    if depth % 2 == 1:
        choose, no_choose = no_choose, choose
    return no_choose, choose


# 从根节点开始搜索
result = dfs(1, 0)
print(max(result))
